package com.study.app.service;

import com.study.common.core.domain.model.AppEmailLoginBody;
import com.study.common.core.domain.model.AppSmsLoginBody;
import com.study.common.core.domain.model.AppThirdLoginBody;
import com.study.common.enums.LoginType;
import com.study.app.domain.AppUser;


public interface IAppLoginService {

    /**
     * 检测是否系统是否存在手机号码
     *
     * @param areaCode 区号
     * @param phoneNumber 手机号码
     * @return true 存在 | false 不存在
     */
    boolean checkPhone(String areaCode, String phoneNumber);


    /**
     * 短信登录，并帮用户校验，若未注册帮用户注册并去登录
     * @param appSmsLoginBody
     * @return token令牌
     */
    String smsLogin(AppSmsLoginBody appSmsLoginBody);

    /**
     * 账号密码登录
     *
     * @param username 用户名
     * @param password 密码
     * @return token令牌
     */
    String login(String username, String password);

    /**
     * 第三方登录 QQ Wechat IPHONE
     *
     * @param appThirdLoginBody 登录信息
     * @return token令牌
     */
    String thirdLogin(LoginType loginType, AppThirdLoginBody appThirdLoginBody);

    /**
     * 退出登录
     */
    void logout();


    AppUser getAppUser(String username);

    String emailLogin(AppEmailLoginBody appEmailLoginBody);

    boolean checkEmail(String email);

    String decrypt(String data);

}
